package controleur;

import java.awt.event.*;
import java.io.Serializable;

import vue.Dessin;
import modele.*;

public class MonControleurSouris implements MouseListener, MouseMotionListener, Serializable {

	private Dessin dessin;

	public MonControleurSouris(Dessin d) {
		this.dessin = d;
	}

	public void mouseClicked(MouseEvent e) {
		System.out.println("clic ici : "+e.getX()+e.getY());
		//System.out.println("outil : "+this.dessin.getChoixOutil());

		if (this.dessin.getChoixOutil() == "Point" || this.dessin.getChoixOutil() == "Pinceau") {
			Point p = new Point(e.getX(), e.getY(),this.dessin.getChoixCouleur());
			this.dessin.getGroupeDeFormes().addForme(p);
			this.dessin.repaint();
		}

		if (this.dessin.getChoixOutil() == "Segment") {
			FormeGeometrique f = this.dessin.getFormeTampon();
			Segment s = (Segment) f;
			
			if (s.getOrigine() == null) {
				//premier clic sur un segment
				System.out.println("1er clic");
				s.setOrigine(new Point(e.getX(), e.getY()));
				this.dessin.repaint();
			} else {
				
				if(s.getExtremite()== null)
				{
					//deuxieme clic pour un segment
				System.out.println("2eme clic");
				s.setExtremite(new Point(e.getX(), e.getY()));
				s.setCouleur(this.dessin.getChoixCouleur());
				this.dessin.repaint();
				
				}
				else
				{
					//les deux point sont deja défini donc c'estun nouveau segment
					s.setCouleur(this.dessin.getChoixCouleur());
					this.dessin.getGroupeDeFormes().addForme(s);
					s.setOrigine(new Point(e.getX(), e.getY()));
					s.setExtremite(null);
					this.dessin.repaint();
					
				}
			}

		}
		
		if (this.dessin.getChoixOutil() == "Polygone") {
			FormeGeometrique f = this.dessin.getFormeTampon();
			Polygone p = (Polygone) f;
			p.addPoint(new Point(e.getX(), e.getY()));
			p.setCouleur(this.dessin.getChoixCouleur());
			this.dessin.repaint();
		}

	}

	@Override
	public void mouseEntered(MouseEvent e) {
	}

	@Override
	public void mouseExited(MouseEvent e) {
	}

	@Override
	public void mousePressed(MouseEvent e) {
//		if (this.dessin.getChoixOutil() == "Segment") {
//			Segment s = (Segment) this.dessin.getFormeTampon();
//			s.setOrigine(new Point(e.getX(),e.getY()));
//		}
	}

	@Override
	public void mouseReleased(MouseEvent e) {
//		if (this.dessin.getChoixOutil() == "Segment") {
//			Segment s = (Segment) this.dessin.getFormeTampon();
//			s.setCouleur(this.dessin.getChoixCouleur());
//			this.dessin.getMonGroupe().addForme(s);
//			s.setOrigine(null);
//			s.setExtremite(null);
//			this.dessin.repaint();	
//		}
	}

	@Override
	public void mouseDragged(MouseEvent e) {
		if (this.dessin.getChoixOutil() == "Pinceau") {
			Point p = new Point(e.getX(), e.getY(),
					this.dessin.getChoixCouleur());

			this.dessin.getGroupeDeFormes().addForme(p);
			this.dessin.repaint();
		}
		
//		if (this.dessin.getChoixOutil() == "Segment") {
//			Segment s = (Segment) this.dessin.getFormeTampon();
//			s.setExtremite(new Point(e.getX(),e.getY()));
//			this.dessin.repaint();
//		}
		
	}

	@Override
	public void mouseMoved(MouseEvent e) {
		this.dessin.getUnindicateurSouris().setText(e.getX()+" / "+e.getY());
	}

}
